Mechanism for connecting a mobile device to a network

ABSTRACT

A system and method are disclosed for offloading control of services in a mobile device to a non-cellular wireless network, such as Wi-Fi. The described system and method allow the overall connection management to be performed by an application processor, while services are handled in a modem using Wi-Fi connectivity. The Wi-Fi subsystem can be fully driven by the modem for time critical operations allowing the application processor to be off (or in low-power mode) when it is not involved in the delivery of services. Battery power is saved by being able to substantially power down the application processor.

CROSS REFERENCE TO RELATED APPLICATION

This application claims priority from U.S. Provisional Application No.61/588,090, filed Jan. 18, 2012, which application is incorporatedherein by reference in its entirety.

FIELD

The present application relates to connecting a mobile device to anetwork, such as a Wi-Fi network.

BACKGROUND

In mobile devices having wireless connectivity, there is a growingmovement to offload traffic of new services, such as IMS based services,to Wi-Fi if whenever possible. The motivation comes from spectrumscarcity for those new often bandwidth hungry services and the limitedcellular coverage that deliver those services. One of the challenges inmodern smartphone architectures is the way the functionality isseparated between a cellular modem and an application processor, withthe Wi-Fi connectivity fully driven from the application processor.However, many of the services like Voice are handled by the modem to bepower efficient. Meanwhile, the application processor continues toconsume power limiting the battery life of the mobile device. With theadvent of IP-based services, more functionality is being moved to themodem. This includes a separate TCP/IP stack, IMS (SIP) stack for callhandling, etc. Wi-Fi connection management functionality and interfaceis traditionally controlled by the Operating System and the applicationprocessor due to its complexity and tight interleaving with the userexperience. Thus, there is a need to more efficiently managefunctionality between the application processor and the modem.

SUMMARY

A system and method are disclosed for offloading control of services ina mobile device to a non-cellular wireless network, such as Wi-Fi. Thedescribed system and method allow the overall connection management tobe performed by an application processor, while services are handled ina modem using Wi-Fi connectivity. The Wi-Fi subsystem can be fullydriven by the modem for time critical operations allowing theapplication processor to be off (or in low-power mode) when it is notinvolved in the delivery of services. Battery power is saved by beingable to substantially power down the application processor.

In one embodiment, when a packet is received from the non-cellularnetwork, a lookup is performed using an associated packet address. Adecision can then be made whether the packet should be processed by anapplication processor or a modem processor. The application processor istypically a processor that runs user applications, such as emailapplications, etc. The modem processor typically runs applicationsexecuting in the modem for communications over networks. Based on theperformed lookup, the packet is either forwarded for processing by theapplication processor or the modem processor.

In another embodiment, the forwarded packet can be routed to a TCP/IPstack associated with the application processor or the TCP/IP stackassociated with the modem. Furthermore, a filter engine can be used toswitch the packets arriving from the non-cellular network to either ofthe TCP/IP stacks.

In yet another embodiment, a profile cache can be used that includes alist of wireless networks to which connection is approved. The profilecache can also contain one or more of the following: the credentialsneeded to connect to the wireless network, network specific parameters,and the priority of wireless networks with respect to each other. Theprofile cache can receive the profiles from the connection manager thatcan be exposed to the user interface and connects to provisioninginfrastructure. Examples for network specific parameters are: broadcastnetwork, hidden network, security mechanisms, etc. The priority can beused to indicate to the Wi-Fi subsystem if it should connect to thisnetwork rather than another one of lower priority.

In yet another embodiment, the application processor can be used toinitiate a phone call by, for example, receiving user dialinginstructions. Then, after the phone call is initiated receipt of packetscarrying the actual voice data packets can be switched from theapplication processor to the modem processor. In this way, theapplication processor can be put into a low-power mode to conservebattery life. In yet another embodiment, packets constituting audioand/or video content can be switched to the modem processor whilesignaling (call control) packets continue to be delivered to theapplication processor.

Thus, an advantage of the present application is that the applicationprocessor, which is traditionally always running when Wi-Fi is active,can be placed in a low-power mode or switched off. For example, whenWi-Fi is not connected, the profile cache in the modem or Wi-Fisubsystem allows the Wi-Fi subsystem to operate independently from themain OS. Therefore, the application processor does not have to wake upwhenever the Wi-Fi subsystem is searching for a valid connection.Additionally, when Wi-Fi is connected but idle the application processorcan be switched into low-power mode or off. In particular, once Wi-Fi isconnected to the serving access point (at layer 2), the Wi-Fi subsystemmaintains the layer 2 connectivity—independent of the operating systembeing involved. As consequence, the operating system need not be wokenup. Broadcasts, such as ARPs, etc. can be filtered by the Wi-Fisubsystem. Once connectivity has been indicated to the modemapplication, it can be set up an end-to-end link to the service, such asan IMS endpoint. Upon success it may switch over. Furthermore, whenWi-Fi connected and used, the modem can handle all communicationsindependent of application processor, such as when a phone call is inprogress.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

The foregoing and other objects, features, and advantages of theinvention will become more apparent from the following detaileddescription, which proceeds with reference to the accompanying figures.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an example mobile device that can include two or moresubsystems and that can be used in multiple embodiment of the presentapplication.

FIG. 2 shows different networks through which a mobile device canconnect to a service, such as an IMS end point.

FIG. 3 shows an exemplary hardware structure that can be used forestablishing a Wi-Fi connection.

FIG. 4 is a flowchart of a method for switching to a modem processor forcommunicating over a non-cellular network.

FIG. 5 is another exemplary flowchart of a method for establishing avoice call via a modem processor.

FIG. 6 illustrates that there are a wide variety of devices that can beused in accordance with the embodiments described herein.

DETAILED DESCRIPTION

FIG. 1 illustrates an exemplary device 100, such as a mobile device,that can be used with the embodiments described herein. The deviceitself represents a distributed system with autonomous blocks. In oneembodiment, the system comprises of two subsystems, such as a modemsubsystem 104 and an application processor subsystem 105. Each entitycan have its own processor and also memory and input and output devices.Although two subsystems are shown, there can be any number ofsubsystems.

Each subsystem can include a variety of optional hardware and softwarecomponents, and any parts can be executed in hardware, software, orfirmware. Each subsystem has its own performance and power consumptioncharacteristics, and the subsystems 104, 105 communicate with each otherthrough inter-processor communication 107. Any components in the mobiledevice can communicate with any other component, although not allconnections are shown, for ease of illustration. The mobile device canbe any of a variety of computing devices (e.g., cell phone, smartphone,handheld computer, Personal Digital Assistant (PDA), etc.) and can allowwireless two-way communications with one or more mobile communicationsnetworks 104, such as a cellular, Wi-Fi, WiMax, or satellite network.Two-way communications can also occur through peer-to-peer routing, suchas Wi-Fi Direct.

An exemplary application processor subsystem 104 includes a controlleror processor 110 (e.g., signal processor, microprocessor, ASIC, or othercontrol and processing logic circuitry) for performing such tasks assignal coding, data processing, input/output processing, power control,and/or other functions. An operating system 112 can control theallocation and usage of the components 102 and support for one or moreapplication programs 114. The application programs can include commonmobile computing applications (e.g., email applications, calendars,contact managers, web browsers, messaging applications), or any othercomputing application.

The illustrated mobile device 100 can include memory 120. Memory 120 caninclude non-removable memory 122 and/or removable memory 124. Thenon-removable memory 122 can include RAM, ROM, flash memory, a harddisk, or other well-known memory storage technologies. The removablememory 124 can include flash memory or a Subscriber Identity Module(SIM) card, which is well known in GSM communication systems, or otherwell-known memory storage technologies, such as “smart cards.” Thememory 120 can be used for storing data and/or code for running theoperating system 112 and the applications 114. Example data can includeweb pages, text, images, sound files, video data, or other data sets

The mobile device 100 can support one or more input devices 130, such asa touchscreen 132, camera 136, physical keyboard 138 and/or trackball140 and one or more output devices 150, such as a display 154. Anexemplary modem subsystem 105 includes a controller or processor 160.The processor 160 can be operational while the application subsystemprocessor 110 is placed in a low-power mode. The modem subsystem canconnect to Wi-Fi modem 162 and/or a cellular radio modem 164. Othermodems can be used in place of or in addition to the illustrated modems.The modem subsystem can also include a non-removable memory 166, similarto the memories already described. An operating system 168 can operateindependently of the operating system 112, but the two can communicatetogether through inter-processor communication 107. The modem subsystemcan also include a speaker 180 and microphone 182 to facilitate a userphone conversation (audio and/or video). An audio pipeline 184 can beused for buffering incoming and outgoing voice data. One or more modemsubsystem applications 188 can be executed on processor 160 andsupported by operating system 168.

Although not shown, the mobile device may contain hardware acceleratorsfor media handling. Additionally, the mobile device may be coupled to agraphics and/or video rendering processor so as to further allow theapplication processor to enter a low-power mode.

FIG. 2 shows a mobile device 200 that can communicate through two ormore different networks, such as a cellular network 202 and anon-cellular network, such as a Wi-Fi network 204. The cellular networkcan connect to an IP multimedia subsystem (IMS) endpoint 210 directly,whereas the Wi-Fi network connects through an Internet router 212. TheIMS endpoint allows access to services and gateways 216 that allows foraccess to a publicly switched telephone network and messaging. Othernon-cellular networks can be used in place of Wi-Fi, such as WIMAX, etc.Although an IMS endpoint is shown, this is just an exemplary service andother services can be used.

A scheme is proposed that allows the overall connection management to beperformed by the application processor/OS, while the services that arehandled in the modem can still use Wi-Fi connectivity. The Wi-Fisubsystem can be fully driven by the modem subsystem for time criticaloperations allowing the application processor to be off or placed inlow-power mode when it is not involved in the delivery of services.There can be a partitioning between Wi-Fi control (a control plane) anduser plane functionality.

The control plane is responsible for connection management and connectsto a network based on a prioritized list of profiles. A profile cancontain the network properties, such as name, network type, securitymechanisms as well as credentials. Additional parameters contained in aprofile can include network type, neighbors, location, channelinformation, Layer 3 address information, etc. The profiles can bepreconfigured or user entered. Profiles are typically ordered in apriority list, which means that the Wi-Fi attempts to connect to thenetwork with the highest priority order in the list whenever it is notconnected. When connected the Wi-Fi subsystem can try to connect to ahigher prioritized network as it becomes available. However, thisbehavior may be implemented in different ways to assure best possibleuser experience.

Traditionally the control plane is implemented in the connection managerthat is running in the application processor. In the proposed approach,the connection management including profile creation, deletion,validation, user interaction is still handled by the Connection Managerin the distributed system. However, the profile matching can becompleted in the Wi-Fi subsystem or the adjacent controller, e.g. in themodem in case of a smartphone. Therefore, the prioritized profile listis passed directly to the Wi-Fi subsystem or the adjacent controller.This way, the application processor can be “off” while the modem orWi-Fi subsystem does all the real time processing. The processor runningthe Connection Manager is woken up in case of state changes or failuresthat require user interaction or notification to other parts of the OS.

The user plane can comprise the TCP/IP stack and user applications.Since the user plane is split between multiple processors, a filterengine is added to route the traffic to the respective applicationprocessor. The purpose of the filter engine is to route packets thatbelong to a specific connection following a deep packet inspection andbased of protocol parameters such as ports, addresses (destinationsource, flow identifiers) to the respective subsystem. The filter engineis configured based on matching connection parameters for the respectivesystem component within the distributed system, e.g. modem vs. appprocessor in a smartphone.

Filter masks can be dynamically added via control path from therespective distributed system. For example, an application running onsubsystem X adds a filter that is reflective of its own address/portand/or of the destination. This way any traffic can be routed directlyto the destination. The filter engine logic itself can exist in theWi-Fi subsystem or in the adjacent controller.

FIG. 3 shows an example hardware diagram that can be used implementWi-Fi phone calling. The system 300 includes a Wi-Fi subsystem 302, amodem sub-system 304, and an application/operating system sub-system306. The Wi-Fi subsystem could be replaced by other non-cellularconnection sub-systems, such as for connection to other short-rangenetworks. In this embodiment, the Wi-Fi subsystem is connected to themodem subsystem 304, rather than the application/OS subsystem 306, whichis the traditional configuration. The modem subsystem 304 includes amodem processor 310, one or more modem applications 312, a TCP/IP stack314, a filter engine (also called a switching engine) 316, a profilecache 318, and a Wi-Fi cellular selector 320. The application/OSsub-system 306 includes a profile store 330, a connection manager 332, aTCP/IP stack 334, one or more user-based applications 336 (e.g., emailapplication, dialing application, etc.), and an application processor338.

The modem processor 310 is used to run a modem operating system (notshown) and any modem applications 312. The Wi-Fi cellular selector 320is a switch that switches the modem between the Wi-Fi subsystem 302 anda cellular connection over the cellular network 202 (FIG. 2). The filterengine 316 can switch packets received from the Wi-Fi subsystem betweenthe application/OS subsystem 306 and the modem subsystem 304. The filterengine 316 can maintain a list of network addresses, and perform anincoming packet inspection. A lookup can be performed to compare anetwork address of the incoming packet against the list of networkaddresses. If a match is found, the packet can be forwarded to theTCP/IP stack 314 in the modem for processing by the modem processor 310running the modem application 312. Otherwise, the filter engine 316 canforward the packet to the TCP/IP stack 334 in the application/OSsubsystem 306. The filter engine 316 performs a packet inspection basedon a TCP/IP address, and forwards the packet to the appropriate stackfor processing. Thus, the filter engine can make intelligent decisionsabout packet switching between an application/OS subsystem and a modemsubsystem. When a modem application, such as IMS, initiates a request itwill first send a DNS (Domain Name System) request. The filter enginecan keep track of the outstanding DNS requests from the modem TCP/IPstack and perform deep packet inspection of all incoming packets inorder to match the DNS response and route it back to the modem app viathe TCP/IP stack in the modem. A similar process is used with TCPrequests where the modem can keep track of the source port anddestination address in order to identify responses that are part of thesession. An alternative embodiment includes a single DNS client sharedbetween modem and application processor that can be either located inthe app processor or in the modem. The DNS client is called at thebeginning of a session when a fully qualified domain name (FQDN) isresolved to an IP address. Yet another approach is to assure that bothDNS client use different DNS server addresses. This assures that thefilter engine forwards the response to the appropriate client. Sincethere is a TCP/IP stack in both the modem and OS in the applicationprocessor, it is possible for them to allocate conflicting source ports.The filter engine in the modem can do deep packet inspection and keeptrack of what source ports have been allocated by the OS in theapplication processor. In the event that the application processor usesa source port already in use by the modem, the modem can allocate a newsource port for that session, maintain a mapping between the two, andperform a translation on every packet in that session. This methodallows the TCP/IP stack in the application processor to functionindependently without any knowledge of the TCP/IP stack in the modem. Analternative approach would be to have the TCP/IP stack in theapplication processor reserve a range of source ports for its use andpass that information to the modem to ensure both TCP/IP stacks do notuse conflicting source ports.

The profile cache 318 includes a list of wireless networks to whichconnection is approved. The connection manager 332 provides theintelligence using the profile store 330 to determine which networks areacceptable for connection. The connection manager 332 can then push theappropriate list down to the profile cache 318. The profile cache 318can then be used to maintain connections over the Wi-Fi network by themodem subsystem 304. It should be well understood that the profile cachecan be placed in a different location, such as in the Wi-Fi subsystem302.

The Wi-Fi subsystem 302 periodically searches for new or higherprioritized networks. When a signal is detected from a wireless beacon(not shown), the received network identifier is sent to the modemsubsystem 304 for comparison against other network identifiers locatedin the profile cache 318.

Applications running in the modem, such as IMS, require settings to beprovisioned to the application before it can function. This is typicallydone by the mobile network operator, but could be provisioned by an enduser as well. The OS on the application processor typically supportsmethods to provision settings on first boot or over the air usingindustry standard protocols, such as OMA DM. It is desirable toprovision all settings to the modem including APN information(cellular). A protocol can exist between the application processor andmodem to allow the provisioning of application specific data to themodem. Specific provisioning data to the application running in themodem includes the address of the corresponding service such as the FQDN(Fully Qualified Domain Name) of the IMS endpoint, DNS server addressesto be used and possible credentials to access any services.

The application in the modem can try to connect to the services endpoint, such as the IMS Gateway, whenever a Wi-Fi connection becomesavailable and the end point can be reached and authentication andauthorization are successful. Therefore, a notification is sent from theWi-Fi subsystem to the modem application informing of the availabilityof a new connection. In case of success any existing connection from themodem application to the IMS endpoint via the cellular network can betorn down.

Likewise when the Wi-Fi connection becomes unavailable or unreliable themodem application can drop the connection and use the cellularconnection instead. The cellular selector 320 routes the traffic betweenthe modem and the filter engine that is connected to the Wi-Fisubsystem.

Functions like establishing, maintaining, and tearing down the optimalconnection can be done by the modem application itself or aggregated inother functional entities to allow maximum re-use for multiple modemapplications if needed. Parameters like signal strength reported fromthe cellular modem and Wi-Fi sub-system, bandwidth, congestion, jitter,delay noticed at various layers of the networking stack can be used tomake a decision to utilize or not utilize the Wi-Fi connection.

FIG. 4 is a flowchart of a method for connecting a mobile device to anon-cellular network. In process block 410, a packet is received fromthe non-cellular network including a network address. In process block420, a lookup is performed using the network address as a key todetermine whether an application processor or modem processor shouldprocess the packet. In process block 430, based on the lookup, a filterengine forwards the packet to a TCP/IP stack associated with theapplication processor or a TCP/IP stack associated with the modemprocessor.

FIG. 5 is a flowchart of a method for initiating a non-cellular phonecall, such as a Wi-Fi phone call. In process block 510, a phone call isinitiated using an application processor. For example, a user can entera number into a dialer application running on the application processor.At this point, the application/OS subsystem is in control of the phonecall. The dialer application communicates with a modem application,which, in turn, invokes a connection to an end point, which is known bya domain name or IP address. The initiation of the phone call creates anexchange between the modem and the end point as illustrated in block520. In process block 530, receipt and transmission of the actualpackets is handled on the modem processor. Thus, the modem subsystem cantake over the call entirely, allowing the application/OS subsystem toswitch to low power mode. Ideally the other components involved in theaudio processing are also part of the modem subsystem. In otherembodiments, the application processor can retain control of an SIPsession, but route all media packets through the modem subsystem. Inother embodiments, the touchscreen and display can be driven by themedia subsystem directly to free the application processor entirely ofpower consumption. Thus, the modem can perform media encoding/decoding,drive the audio interface, and drive the video interface.

Some additional example flow descriptions are as follows:

Establishing Wi-Fi connection

1. The device is in range of a known Wi-Fi network.

2. Since the Wi-Fi receiver is always on, it detects the network basedon the received beacon or probe response as part if its periodic scan.

3. In a next step the Wi-Fi subsystem informs the modem that it found anew Wi-Fi network which compares the signature with one of the cachedprofiles.

4. Upon match the modem instructs the Wi-Fi subsystem to connect to thenetwork.

5. In case of no match, it will forward the request to the Applicationprocessor which will take action such as indicating the newly foundnetwork to the user.

Note: the profile cache can be also part of the Wi-Fi subsystem itself.In this case the Wi-Fi subsystem will automatically connect withoutinvolving the modem.

Establishing a connection between modem application and IMS endpoint

1. Once the low level connection has been established, the modemapplication is informed of the new bearer. It will try to establish anIP connection to the known endpoint based on the FQDN that waspreviously provisioned to the modem application.

2. The modem application therefore needs the IP address of the endpoint.If it does not have already the IP address, it will trigger a DNS lookupusing the provisioned DNS server address.

3. The filter engine memorizes the destination IP address as well sourceport number of the request.

4. The DNS lookup will result in a response from the DNS servercontaining the IP address of the IMS end point. The filter enginematches the source address and destination port and forwards itaccordingly to the modem TCP/IP stack which subsequently passes it tothe modem application.

5. The modem application will now try to establish a connection viaWi-Fi with the IMS endpoint.

6. Again the destination address of the IMS endpoint and source port ofthe request are memorized by the filter engine so that any responsesfrom the corresponding source address and destination port are directedto the modem application. Note: All other packets are routed to the OS.

7. During the subsequent message exchange the modem application getsauthenticated and authorized.

Note: during the exchange the IMS endpoint may inform the modemapplication of additional addresses and connection parameters. The modemapplication may therefore configure the filter engine to direct othersource addresses to the modem.

Establishing a voice call via Wi-Fi and IMS from the phone

1. The user enters the number and presses call (not shown).

2. The dialer application informs the modem application responsible forcalling of the call and passes on the called number.

3. The modem application uses the established connection to signal acall via specific messages defined in the SIP protocol for example.

4. The call signaling is passed to the receiver who may be on a PSTNnetwork.

5. Once the receiver has picked up the phone, the call acceptance isindicated back to the caller and a call bearer is established betweenrespective modem application and the PSTN subscriber on the other end.Gateways in between may translate the call from and to IP packetswitched to circuit switched protocols.

6. As both caller and called subscriber engage in the conversation theapplication processor on the phone can go off as all the processing ishandled by the modem and Wi-Fi subsystem. (Note: dialing and userinteraction uses the application processor).

Establishing a voice call via Wi-FI and IMS from the phone where the IMSapplication itself resides on the phone and the modem establishes mediastreams through Wi-Fi

1. The user enters the number and presses call.

2. The dialer application informs the IMS application on the phoneresponsible for the call and passes on the called number.

3. The IMS application on the phone uses its own TCP/IP connection tosignal a call via specific messages defined in the SIP protocol, forexample. The call signaling is passed to the receiver who may be on aPSTN network.

4. Once the receiver has picked up the phone, the call acceptance isindicated back to the caller. The IMS application on the phone directsthe modem to establish a call bearer to the PSTN subscriber on the otherend. This bearer uses the established TCP/IP network connection in themodem.

5. As both caller and called subscriber engage in the conversation theapplication processor on the phone can go off as all the audioprocessing and communication is handled by the modem and Wi-Fisubsystem. Changes in the call state can be handled by the applicationprocessor.

FIG. 06 illustrates a generalized example of a suitable implementationenvironment 600 in which described embodiments, techniques, andtechnologies may be implemented.

In example environment 600, various types of services (e.g., computingservices) are provided by a cloud 610. For example, the cloud 610 cancomprise a collection of computing devices, which may be locatedcentrally or distributed, that provide cloud-based services to varioustypes of users and devices connected via a network such as the Internet.The implementation environment 600 can be used in different ways toaccomplish computing tasks. For example, some tasks (e.g., processinguser input and presenting a user interface) can be performed on localcomputing devices (e.g., connected devices 630, 640, 650) while othertasks (e.g., storage of data to be used in subsequent processing) can beperformed in the cloud 610.

In example environment 600, the cloud 610 provides services forconnected devices 630, 640, 650 with a variety of screen capabilities.Connected device 630 represents a device with a computer screen 635(e.g., a mid-size screen). For example, connected device 630 could be apersonal computer such as desktop computer, laptop, notebook, netbook,or the like. Connected device 640 represents a device with a mobiledevice screen 645 (e.g., a small size screen). For example, connecteddevice 640 could be a mobile phone, smart phone, personal digitalassistant, tablet computer, or the like. Connected device 650 representsa device with a large screen 655. For example, connected device 650could be a television screen (e.g., a smart television) or anotherdevice connected to a television (e.g., a set-top box or gaming console)or the like. One or more of the connected devices 630, 640, 650 caninclude touchscreen capabilities. Touchscreens can accept input indifferent ways. For example, capacitive touchscreens detect touch inputwhen an object (e.g., a fingertip or stylus) distorts or interrupts anelectrical current running across the surface. As another example,touchscreens can use optical sensors to detect touch input when beamsfrom the optical sensors are interrupted. Physical contact with thesurface of the screen is not necessary for input to be detected by sometouchscreens. Devices without screen capabilities also can be used inexample environment 600. For example, the cloud 610 can provide servicesfor one or more computers (e.g., server computers) without displays. Anyof the devices 630, 640, 650 can use the filter engine for switchingbetween cellular and non-cellular networks.

Services can be provided by the cloud 610 through service providers 620,or through other providers of online services (not depicted). Forexample, cloud services can be customized to the screen size, displaycapability, and/or touchscreen capability of a particular connecteddevice (e.g., connected devices 630, 640, 650).

In example environment 600, the cloud 610 provides the technologies andsolutions described herein to the various connected devices 630, 640,650 using, at least in part, the service providers 620. For example, theservice providers 620 can provide a centralized solution for variouscloud-based services. The service providers 620 can manage servicesubscriptions for users and/or devices (e.g., for the connected devices630, 640, 650 and/or their respective users).

Although the operations of some of the disclosed methods are describedin a particular, sequential order for convenient presentation, it shouldbe understood that this manner of description encompasses rearrangement,unless a particular ordering is required by specific language set forthbelow. For example, operations described sequentially may in some casesbe rearranged or performed concurrently. Moreover, for the sake ofsimplicity, the attached figures may not show the various ways in whichthe disclosed methods can be used in conjunction with other methods.

Any of the disclosed methods can be implemented as computer-executableinstructions stored on one or more computer-readable storage media(e.g., non-transitory computer-readable media, such as one or moreoptical media discs, volatile memory components (such as DRAM or SRAM),or nonvolatile memory components (such as hard drives)) and executed ona computer (e.g., any commercially available computer, including smartphones or other mobile devices that include computing hardware). Any ofthe computer-executable instructions for implementing the disclosedtechniques as well as any data created and used during implementation ofthe disclosed embodiments can be stored on one or more computer-readablemedia (e.g., non-transitory computer-readable media). Thecomputer-executable instructions can be part of, for example, adedicated software application or a software application that isaccessed or downloaded via a web browser or other software application(such as a remote computing application). Such software can be executed,for example, on a single local computer (e.g., any suitable commerciallyavailable computer) or in a network environment (e.g., via the Internet,a wide-area network, a local-area network, a client-server network (suchas a cloud computing network), or other such network) using one or morenetwork computers.

For clarity, only certain selected aspects of the software-basedimplementations are described. Other details that are well known in theart are omitted. For example, it should be understood that the disclosedtechnology is not limited to any specific computer language or program.For instance, the disclosed technology can be implemented by softwarewritten in C++, Java, Perl, JavaScript, Adobe Flash, or any othersuitable programming language. Likewise, the disclosed technology is notlimited to any particular computer or type of hardware. Certain detailsof suitable computers and hardware are well known and need not be setforth in detail in this disclosure. Furthermore, telephone calls mayinclude audio, video, and other media and may be accomplished using avariety of protocols including wireline and wireless signaling,SIP-based telephony systems including, but not limited to IMS, and otherclient-to-network and peer-to-peer protocols (e.g., Skype).

Furthermore, any of the software-based embodiments (comprising, forexample, computer-executable instructions for causing a computer toperform any of the disclosed methods) can be uploaded, downloaded, orremotely accessed through a suitable communication means. Such suitablecommunication means include, for example, the Internet, the World WideWeb, an intranet, software applications, cable (including fiber opticcable), magnetic communications, electromagnetic communications(including RF, microwave, and infrared communications), electroniccommunications, or other such communication means.

The disclosed methods, apparatus, and systems should not be construed aslimiting in any way. Instead, the present disclosure is directed towardall novel and nonobvious features and aspects of the various disclosedembodiments, alone and in various combinations and subcombinations withone another. The disclosed methods, apparatus, and systems are notlimited to any specific aspect or feature or combination thereof, nor dothe disclosed embodiments require that any one or more specificadvantages be present or problems be solved.

In view of the many possible embodiments to which the principles of thedisclosed invention may be applied, it should be recognized that theillustrated embodiments are only preferred examples of the invention andshould not be taken as limiting the scope of the invention. Rather, thescope of the invention is defined by the following claims. We thereforeclaim as our invention all that comes within the scope of these claims.

We claim:
 1. A method for communicating with a mobile device over awireless network, comprising: receiving a packet in the mobile devicefrom a wireless network, other than a cellular network, the packetincluding a network address; performing a lookup using the networkaddress to determine whether the packet should be processed by anapplication processor or a modem processor in the mobile device; andforwarding the packet based on the lookup for processing by either theapplication processor or the modem processor.
 2. The method of claim 1,further including initiating a phone call by using the applicationprocessor and switching to the modem processor to handle call media dataand signaling during the phone call.
 3. The method of claim 2, furtherincluding placing the application processor in low-power mode afterswitching to the modem processor.
 4. The method of claim 1, wherein thewireless network is a short-range network and further includinginitiating audio and/or video streaming using the application processorand switching to the modem processor to handle media exchange.
 5. Themethod of claim 1, further including establishing a connection with thewireless network by receiving a network identifier from a wirelessbeacon, comparing the network identifier with a plurality of cachednetwork identifiers, and if there is a match between the networkidentifier and one of the cached network identifiers, connecting to thewireless network using the modem processor.
 6. The method of claim 5,further including when there is not a match, forwarding a request toconnect to the network to an application processor.
 7. The method ofclaim 1, further including using a profile cache that includes a list ofwireless networks to which connection is approved.
 8. The method ofclaim 7, wherein the profile cache is located in a modem associated withthe modem processor or in a Wi-Fi subsystem connected to the modem.
 9. Amethod for communicating over a wireless network, comprising: initiatinga phone call using an application processor to receive user dialinginstructions; and switching receipt of packets associated with the phonecall from an application executing on the application processor to anapplication executing on a modem processor.
 10. The method of claim 9,wherein the wireless network is a Wi-Fi network.
 11. The method of claim9, further including initiating a low-power mode for the applicationprocessor after switching to the modem processor.
 12. The method ofclaim 9, further including establishing a connection with the wirelessnetwork by receiving a network identifier from a wireless beacon,comparing the network identifier with a plurality of cached networkidentifiers, and if there is a match between the network identifier andone of the cached network identifiers, connecting to the wirelessnetwork using the modem processor.
 13. The method of claim 12, furtherincluding when there is not a match, forwarding a request to connect tothe network to an application processor.
 14. The method of claim 9,further including using a profile cache that includes a list of wirelessnetworks to which connection is approved.
 15. The method of claim 14,wherein the profile cache is located in a modem associated with themodem processor or in a Wi-Fi subsystem connected to the modem.
 16. Amobile device, comprising: a first processor for executing a userapplication on the mobile device; a second processor for executing amodem application on the mobile device, the second processor coupled tothe first processor; a network subsystem coupled to the modem, thenetwork subsystem for monitoring available networks and communicating tothe first or second processor when there is a potential connection to anetwork; and a filter engine coupled to the network subsystem forsending packets from the network subsystem to be processed by the firstprocessor or the second processor.
 17. The mobile device of claim 16,further including a first Internet protocol stack associated with thefirst processor and a second Internet protocol stack associated with thesecond processor, and wherein the filter engine is coupled to the firstand second Internet protocol stacks and stores the packets in the firstand second Internet protocol stacks for processing by the first andsecond processor.
 18. The mobile device of claim 16, wherein the networksubsystem is a Wi-Fi subsystem.
 19. The mobile device of claim 16,wherein the filter engine stores network addresses and switches betweensending the packets for processing by the first or second processorbased on whether a network address associated with a received packetmatches one of the stored network addresses.
 20. The mobile device ofclaim 16, further including a profile cache that includes a list ofwireless networks to which connection is approved.